package login;

import infor.User;

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import org.eclipse.jface.text.templates.GlobalTemplateVariables.Year;

import main.ChangePass;
import main.Home;

public class Login extends JFrame implements ActionListener {

	private JPanel contentPane;
	private JLabel lblPassword;
	public JTextField textUser;
	private JButton btOk;
	private JButton btCancel;
	private JPasswordField passPassword;
	private Connects connect;
	private JLabel lblChnChcV;
	public JComboBox comboBox;

	/**
	 * Launch the application.
	 */
	// Hàm main chính để hiển thị Frame
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Login frame = new Login();
					frame.setVisible(true);
					frame.setTitle("Hệ thống đăng nhập");
					// Set vị trí giữa cho
														// frame

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	// Add các control vào Jfarme
	public Login() {
		setBounds(500, 300, 300, 150);
		// Tạo panel
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		// Tạo layout cho panel
		contentPane.setLayout(new GridLayout(4, 2));
		// add lablel,textfiel,combobox vào panel
		lblChnChcV = new JLabel("Chọn chức vụ:");
		contentPane.add(lblChnChcV);

		// Tạo danh sách trong combobox
		String list[] = { "Admin", "Nhân viên", "Khách hàng" };
		comboBox = new JComboBox(list);
		contentPane.add(comboBox);

		JLabel lblNewLabel = new JLabel("New label");
		contentPane.add(lblNewLabel);
		lblNewLabel.setText("Username/Mã số: ");

		textUser = new JTextField();
		contentPane.add(textUser);
		textUser.setColumns(10);
		textUser.setFocusable(true);

		lblPassword = new JLabel("Password:");
		contentPane.add(lblPassword);
		// Tạo button đăng nhập và sự kiện khi nhấn nút
		btOk = new JButton("Đăng nhập");
		btOk.addActionListener(this);

		// Tạo textfiel để điền mật khẩu
		passPassword = new JPasswordField();
		contentPane.add(passPassword);
		contentPane.add(btOk);

		btCancel = new JButton("Cancel");// Sự kiện khi nhấn nút Cancel
		btCancel.addActionListener(this);
		contentPane.add(btCancel);
	}

	public void showHome() {
		Home main = new Home();
		ChangePass c = new ChangePass();
		main.setVisible(true);
		main.setSize(900, 510);
		main.setResizable(false);
		this.setVisible(false);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		main.lblUsername.setText(comboBox.getSelectedItem().toString());
		main.lblCode.setText(textUser.getText().toString());
		c.cur_pass = passPassword.getText().toString();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == btOk) {
			connect = new Connects();// Tạo class connect mới
			int select = comboBox.getSelectedIndex();// Vị trí được chọn
			String user = textUser.getText().toString();
			String pass = passPassword.getText().toString();
			String t = comboBox.getSelectedItem().toString();// Item được
																// chọn
			try {
				switch (select) {
				case 0:// Vị trí 0: Admin
					if (connect.loginadmin(user, pass) == true) {
						JOptionPane.showMessageDialog(null,
								"Đã đăng nhập với quyền " + t, "Thông báo",
								JOptionPane.INFORMATION_MESSAGE);
						showHome();
						System.out.print("Connect " + t);

					} else
						JOptionPane.showMessageDialog(null,
								"Không thể truy cập. Hãy thử lại!",
								"Thông báo", JOptionPane.INFORMATION_MESSAGE);
					passPassword.setText("");
					break;
				case 1:// Vị trí 1:Nhân viên
					if (connect.loginnhanvien(user, pass) == true) {
						JOptionPane.showMessageDialog(null,
								"Đã đăng nhập với quyền " + t, "Thông báo",
								JOptionPane.INFORMATION_MESSAGE);
						showHome();
						System.out.print("Connect " + t);
					}

					else
						JOptionPane.showMessageDialog(null,
								"Không thể truy cập. Hãy thử lại!",
								"Thông báo", JOptionPane.INFORMATION_MESSAGE);
					passPassword.setText("");
					break;
				case 2:// Vị trí 2: Khách hàng
					if (connect.loginkhachhang(user, pass) == true) {
						JOptionPane.showMessageDialog(null,
								"Đã đăng nhập với quyền " + t, "Thông báo",
								JOptionPane.INFORMATION_MESSAGE);
						showHome();
						System.out.print("Connect " + t);
					} else
						JOptionPane.showMessageDialog(null,
								"Không thể truy cập. Hãy kiểm tra lại!",
								"Thông báo", JOptionPane.INFORMATION_MESSAGE);
					passPassword.setText("");
					break;
				}

			} catch (Exception e1) {
				e1.printStackTrace();
				JOptionPane.showMessageDialog(null,
						"Chưa kết nối cơ sở dữ liệu", "Thông báo",
						JOptionPane.ERROR_MESSAGE);
			}
		}
		if (e.getSource() == btCancel) {
			int tb = JOptionPane.showConfirmDialog(null,
					"Bạn chắc chắn muốn thoát chương trình?", "Thoát",
					JOptionPane.YES_NO_OPTION);
			if (tb == JOptionPane.OK_OPTION)
				System.exit(0);
			System.out.print("Cancel");
		}
	}
}
